草庐IT

C++11 线程 : sleep for a remaining time

全部标签

c++ - 线程安全类的有序静态初始化

就结尾处的简短问题而言,这篇文章似乎太长了。但是我还需要描述一个我刚刚想出的设计模式。也许它很常用,但我从未见过它(或者它只是不起作用:)。首先,这里有一段代码(据我所知)由于“静态初始化顺序失败”而具有未定义的行为。问题是Spanish::s_englishToSpanish的初始化依赖于English::s_numberToStr,它们都是静态初始化的并且在不同的文件中,因此这些初始化的顺序是未定义的:文件:英文.h#pragmaonce#include#includeusingnamespacestd;structEnglish{staticvector*s_numberToSt

c++ - 从另一个线程终止 C++ 中的线程

基本上我是在用两个线程寻找素数。我将每个线程的可能素数范围分成两半,或者以其他方式在线程之间静态分配范围。然而,必须处理较小数字的线程将不可避免地在计算较大数字的线程之前完成。我想要做的是,只要任一线程通过它的范围,就终止两个线程,然后将尚未完成的线程的剩余范围的一半交给完成的线程,这样它们就会递归地平衡并且将始终并行运行。例如:A(1-100)和B(100-200),A先完成,而B仍在150。两者都停止,A开始像A(150-175),B像B(175-200)。到目前为止,这是我的代码:#include#include#include#include#include#includeus

windows - 使用 Windows 线程时,是否可以指定一个缓冲区用于线程的堆栈,类似于 pthread_attr_setstack()?

pthreads允许用户提供一block内存用于线程堆栈:size_tstack_size=1024*1024*4;void*stack=malloc(stack_size);pthread_attr_tattributes;pthread_attr_init(&attributes);pthread_attr_setstack(&attributes,stack,stack_size);pthread_tthread_id;pthread_create(&thread_id,&attributes,worker_function,NULLWindows线程是否提供类似的功能?Crea

windows - x64下的线程信息 block

我需要从x64平台上的TIB获取最大和最小堆栈(我知道我需要用GS寄存器替换FS寄存器。)在x86平台上我可以使用thistable并找到正确的偏移量你知道我在哪里可以找到x64平台的表格吗? 最佳答案 这是一个适用于x86和x64的程序。#include#includevoidmain(){PNT_TIBptib=(PNT_TIB)NtCurrentTeb();#ifdef_AMD64_printf("Stackbase:%08I64X,limit:%08I64X\n",ptib->StackBase,ptib->StackLim

windows - 安装 plesk 11 后安装 .net framework 4

我有一台装有plesk11的Windows2008服务器。我安装了plesk,在添加了几台主机后,我意识到缺少.Net4,所以我下载并安装了.Net4,但现在Plesk在主机配置中没有.Net4,我不知道如何让Plesk更新它数据库并允许我为我的主机选择.net4。 最佳答案 在“工具与设置\服务器组件”中尝试“刷新” 关于windows-安装plesk11后安装.netframework4,我们在StackOverflow上找到一个类似的问题: https:

c++ - 确定进程的输入线程 ID

有谁知道确定进程输入线程的方法吗?场景是我想调用GetKeyboardLayout,从一个单独的应用程序(可以是任何程序)中传入输入线程ID。每个线程都可以有自己的键盘输入语言集,但是为另一个进程找出合适的输入线程ID似乎是不可能的事情。例如,我创建了一个函数,我将记事本的进程ID传递给该函数,该函数在内部确定输入线程ID并从GetKeyboardLayout返回值。此函数的调用者随后会在屏幕上显示为记事本选择的输入语言。你们这些好人有什么想法吗? 最佳答案 Windows不要求进程具有与用户交互的特定线程。它不一定是进程的启动线程

c - 无法使用for循环创建多个线程

我正在尝试使用for循环创建3个线程。以下是我的代码片段:DWORDWINAPIThreadProc0(LPVOIDparam){return0;}DWORDWINAPIThreadProc1(LPVOIDparam){return0;}DWORDWINAPIThreadProc2(LPVOIDparam){return0;}intWINAPIWinMain(HINSTANCEhInst,HINSTANCEhPrevInstance,LPSTRlpCmdLine,intnShowCmd){DWORDthreadId=0;intmax_number=1;//Startthethreads

创建 3 个线程并使用 WSAWaitForMultipleEvents() 和 WSAEnumNetworkEvents() 时 CPU 使用率 100%

我创建了3个线程,每个线程都有一个套接字。在每个线程中,套接字被设置为“事件驱动”,并且每当数据可供读取时,就会生成一个事件。该代码工作正常,但它占用CPU使用率高达100%,这肯定是不可取的。我想我犯了一些错误。下面是我的代码。请帮助我找出导致100%CPU使用率的错误。代码:DWORDWINAPIThreadProc(LPVOIDparam){intthreadNumber=(int)param;intPORT=8888+threadNumber;//sothateachthreadbind()sitssockettoadifferentPortnumber.WSADATAwsa;

c# - 使用线程进行数据库操作的最佳方式是什么?

我正在开发一个以SQLCompact作为主数据库的WinForms应用程序。有人告诉我我永远不会弄乱UI线程,每个操作都需要在UI线程之外完成。按照这个演讲,我为每个CRUD操作创建了一个线程并出现了一个进度条,但我认为这可能不是执行此操作的最佳方法,而且我不确定何时何地在数据库操作的同时使用线程。我没有使用UI线程来进行这些数据库调用,但如果我愿意的话,我没有看到任何问题。为了向用户显示信息,我在需要时调用(在网格或组合框中显示数据)。这是一小段代码:this.SuspendLayout();ProgressDialogprogressDialog=newProgressDialog

Windows 8.1/IE11 自定义 URL 协议(protocol)打开 --> about :blank

Windows8.1/IE11自定义url协议(protocol)困惑。启动后,应用程序被执行,然后浏览器中的url重定向到about:blank即使是Skype的协议(protocol)也是如此:ChatviaSkype我尝试了一些方法,例如使用iframe,document.location.href=u;结果很差。当链接位于iframe内时,这似乎有效,否则失败:testdocument.location.href='proto://datadatadata';有人知道如何在浏览器不重定向到about:blank的情况下启动协议(protocol)的应用程序吗?我现在将IE11视